package com.qdxwx.data.service.coupon;


import com.qdxwx.common.page.PageRequest;
import com.qdxwx.models.coupon.CouponCode;
import com.qdxwx.models.coupon.CouponCodeDTO;
import com.qdxwx.models.coupon.CouponCodeQuery;
import com.qdxwx.models.course.Course;

import java.util.List;
import java.util.Map;

/**
 * CouponCode接口
 * Qdx NetSchool Platform
 * @author qdxwx
 * @updateTime 2022/5/25
 * @description
 */
public interface CouponCodeService {

	int insert(CouponCode couponCode);

	void deleteById(Long id);
	/**
	 * 删除优惠券下的优惠编码
	 */
	void deleteByCouponId(Long couponId);

	int update(CouponCode couponCode);

	/**
	 * 指派优惠券给用户
	 */
	void updateUser(CouponCode couponCode);

	/**
	 * 根据id获取单个CouponCode对象
	 */
	CouponCode get(Long id);

	/**
	 * 根据优惠券编码获取单个CouponCode对象
	 */
	CouponCodeDTO getDTOByCode(String code);

	/**
	 * id查询优惠券编码
	 */
	CouponCodeDTO getDTO(Long id);
	/**
	 * 优惠编码使用限制
	 */
	Map<String, Object> checkCode(CouponCodeDTO couponCodeDTO, List<Course> courses, Long loginUserId);

	/**
	 * 个人中心我的优惠券
	 */
	List<CouponCodeDTO> getDTOList(CouponCodeQuery couponCodeQuery, PageRequest page);

	/**
	 * 过期的优惠编码改状态
	 */
	void overdueCodeByTime();

	List<CouponCode> getList(CouponCode couponCode, PageRequest page);

	long count(CouponCode couponCode);

	int countCouponCodeDTO(CouponCodeQuery couponCodeQuery);
}